/**
 * 编写一个 Node.js 脚本，将指定目录下的所有文件备份到另一个目录中。备份文件的命名规则为：原文件名_备份时间戳。
提示：使用 fs.readdir()、fs.copyFile() 和 Date.now()。
 */

// 引入fs path 模块
import fs from 'fs';
import path from 'path';
// 要备份的目录路径
var backupsDirPath = './test';
// 另一个目录的路径
var targetDirPath = './test2';
// 先读取要备份的目录
fs.readdir(backupsDirPath, 'utf8', (err, data) => {
    // 如果没有目标目录我们就自动创建一个
    if (fs.existsSync(targetDirPath)) {
        // 遍历目录下的文件
        data.forEach(ele => {
            // 文件的完整路径
            var fileFullPath = `${backupsDirPath}/${ele}`;
            // 原文件名
            fs.stat(fileFullPath, (err, stat) => {
                if (stat.isDirectory()) {
                    console.log('这个是子目录呦~~');
                    return;
                } else {
                    // 读取文件内容
                    fs.readFile(fileFullPath, 'utf-8', (err, data) => {
                        // 获取旧的文件名
                        var oldFileName = path.parse(ele).name
                        console.log(oldFileName);

                        // 新的文件名
                        var newFileName = `${oldFileName}_${Date.now()}`;
                        console.log(newFileName);

                        // 备份文件格式(要完整路径)
                        var targetFileNamePath = path.join(targetDirPath, newFileName);
                        console.log(targetFileNamePath);
                        // 写入另一个文件中
                        fs.copyFile(fileFullPath, targetFileNamePath, err => {
                            if (err) {
                                console.log('复制失败');
                                return;
                            } else {
                                console.log('复制成功');
                            }
                        })
                    })
                }
            })
        })
    } else {
        fs.mkdir(targetDirPath, (err) => {
            if (err) {
                console.log('创建文件失败');
                return;
            } else {
                console.log('创建文件成功');
                var fileFullPath = `${backupsDirPath}/${ele}`;
                data.forEach(ele => {
                    // 原文件名
                    fs.stat(fileFullPath, (err, stat) => {
                        if (stat.isDirectory()) {
                            console.log('这个是子目录呦~~');
                            return;
                        } else {
                            // 读取文件内容
                            fs.readFile(fileFullPath, 'utf-8', (err, data) => {
                                // 获取旧的文件名
                                var oldFileName = path.parse(ele).name
                                // 新的文件名
                                var newFileName = `${oldFileName}_${Date.now()}`;
                                console.log(newFileName);
                                // 备份文件格式
                                var targetFileNamePath = path.join(targetDirPath, newFileName);
                                // 写入另一个文件中
                                fs.copyFile(fileFullPath, targetFileNamePath, err => {
                                    if (err) {
                                        console.log('复制失败');
                                        return;
                                    } else {
                                        console.log('复制成功');
                                    }
                                })
                            })
                        }
                    })
                })
            }
        })
    }
})